package com.xdb.presistence.view;

import java.util.List;
import java.util.Map;

import com.xdb.presistence.table.XDBTableRow;

/**
 * XDB视图管理接口
 * @author woate
 *
 */
public interface XDBViewStore {
	/**
	 * 创建一个视图，同时将sql语句存下来
	 * @param tabName
	 * @param dml
	 */
	void create(String name, String sql);
	/**
	 * 删除视图
	 * @param name
	 */
	void drop(String name);
	/**
	 * 将记录插入到视图
	 * @param name
	 * @param rows
	 * @return
	 */
	int insert(String name, XDBTableRow... rows);
	/**
	 * 按关键字条件删除
	 * @param name
	 * @param keywords
	 * @return
	 */
	int delete(String name, Map<String, String> keywords);
	/**
	 * 将更新的记录更新
	 * @param name
	 * @param newRows
	 * @return
	 */
	int update(String name, XDBTableRow... newRows);
	/**
	 * 在视图中根据关键字条件查询记录，内部需要完成对视图中所有表记录的获取，同时使用虚表完成组装。
	 * @param name
	 * @param keywords
	 * @return
	 */
	List<XDBTableRow> select(String name, Map<String, String> keywords);
	/**
	 * 查找视图对象
	 * @param name
	 * @return
	 */
	XDBView lookup(String name);
}
